home *** CD-ROM | disk | FTP | other *** search
/ Champak 29 / Volume 29 - JOGO DISK .iso / Games / jungle_adventure.swf / scripts / __Packages / SSLevel.as < prev    next >
Text File  |  2006-11-29  |  7KB  |  244 lines

  1. class SSLevel
  2. {
  3.    var startNode = "Start";
  4.    var startX = 0;
  5.    var startY = 0;
  6.    var levelLeft = 0;
  7.    var levelRight = 0;
  8.    var levelTop = 0;
  9.    var levelBottom = 0;
  10.    var current = 0;
  11.    var total = 0;
  12.    var pauseTime = 20;
  13.    var ready = false;
  14.    var editor_docObject = true;
  15.    var editor_args_names = ["levelName","preProcess","background","startNode","music"];
  16.    var editor_args_values = ["name","preProcess","background","Start","music"];
  17.    var editor_args_types = ["string","string","string","string","string"];
  18.    var editor_args_options = ["A-Za-z0-9","A-Za-z","A-Za-z0-9","A-Za-z0-9","A-Za-z0-9"];
  19.    var editor_args_descriptions = [];
  20.    var editor_args_mode = [0,0,0,0,0];
  21.    var editor_args_component = ["TextInput","TextInput","TextInput","TextInput","TextInput"];
  22.    var editor_commands = [];
  23.    function SSLevel(x)
  24.    {
  25.       this.worldConstructor = GameWorld;
  26.       this.objects = [];
  27.       switch(typeof x)
  28.       {
  29.          case "string":
  30.             this.name = x;
  31.             break;
  32.          case "object":
  33.             this.readXML(x);
  34.       }
  35.    }
  36.    function addObject()
  37.    {
  38.       this.objects.push(arguments);
  39.    }
  40.    function readXML(xObj)
  41.    {
  42.       this.ready = false;
  43.       var wn = xObj.firstChild;
  44.       var attr = wn.attributes;
  45.       this.name = attr.levelName;
  46.       this.preProcess = eval(attr.preProcess);
  47.       this.background = _global[attr.background];
  48.       this.startNode = attr.startNode;
  49.       this.music = attr.music;
  50.       var a;
  51.       var i = -1;
  52.       var c = a = wn.childNodes.length;
  53.       while(++i < c)
  54.       {
  55.          if(a[i].nodeName === "objects")
  56.          {
  57.             this.readObjects(wn.firstChild);
  58.          }
  59.       }
  60.       this.readXMLComplete();
  61.    }
  62.    function readObjects(node)
  63.    {
  64.       var types = node.attributes.types.split(",");
  65.       var objData = node.firstChild.nodeValue;
  66.       var i = types.length;
  67.       while(--i > -1)
  68.       {
  69.          types[i] = eval(types[i]);
  70.       }
  71.       var aObjs = objData.split(SSGlobal.ED_OBJ_DELIMETER);
  72.       var objAttrDelim = SSGlobal.ED_OBJ_ATTR_DELIM;
  73.       var i = -1;
  74.       var c = aObjs.length;
  75.       while(++i < c)
  76.       {
  77.          var a = aObjs[i].split(objAttrDelim);
  78.          var j = a.length;
  79.          a[0] = types[a[0]];
  80.          while(--j)
  81.          {
  82.             var v = a[j];
  83.             if(v == "")
  84.             {
  85.                a[j] = null;
  86.             }
  87.             else
  88.             {
  89.                var char = v.charAt(0);
  90.                if(char == "\"" || char == "\'")
  91.                {
  92.                   a[j] = v.substring(1,v.length - 1);
  93.                }
  94.                else
  95.                {
  96.                   v = Number(v);
  97.                   if(isNaN(v))
  98.                   {
  99.                      var tmp = eval(a[j]);
  100.                      if(tmp != null)
  101.                      {
  102.                         a[j] = tmp;
  103.                      }
  104.                   }
  105.                   else
  106.                   {
  107.                      a[j] = v;
  108.                   }
  109.                }
  110.             }
  111.          }
  112.          this.addObject.apply(this,a);
  113.       }
  114.    }
  115.    function readXMLStep()
  116.    {
  117.    }
  118.    function readXMLComplete()
  119.    {
  120.       clearInterval(this.processID);
  121.       delete this.processID;
  122.       this.ready = true;
  123.       this.onReadXMLComplete();
  124.    }
  125.    function build(base)
  126.    {
  127.       this.ready = false;
  128.       var _loc4_ = new this.worldConstructor(this.name);
  129.       _loc4_.name = this.name;
  130.       base.addWorld(_loc4_);
  131.       this.levelLeft = this.levelTop = 268435455;
  132.       this.levelRight = this.levelBottom = -268435455;
  133.       this.preProcess(base,_loc4_);
  134.       if(typeof this.background == "function")
  135.       {
  136.          this.background(_loc4_);
  137.       }
  138.       else
  139.       {
  140.          var _loc3_ = this.background.layers.length;
  141.          while((_loc3_ = _loc3_ - 1) > -1)
  142.          {
  143.             var _loc2_ = {};
  144.             _loc2_.__proto__ = this.background.layers[_loc3_];
  145.             _loc4_.addBackground(_loc2_);
  146.          }
  147.       }
  148.       this.processObjects(base,_loc4_);
  149.       return _loc4_;
  150.    }
  151.    function processObjects(base, ssw)
  152.    {
  153.       this.lastTime = getTimer();
  154.       this.current = -1;
  155.       this.total = this.objects.length;
  156.       this.intervalID = setInterval(function(o, base, ssw)
  157.       {
  158.          o.objectsStep(base,ssw);
  159.       }
  160.       ,0,this,base,ssw);
  161.    }
  162.    function objectsStep(base, ssw)
  163.    {
  164.       var _loc4_ = Math.abs(getTimer() - (this.lastTime = getTimer()));
  165.       while(++this.current < this.total)
  166.       {
  167.          var _loc2_ = this.objects[this.current];
  168.          this.processObject(ssw,_loc2_);
  169.       }
  170.       if(this.current == this.total)
  171.       {
  172.          this.complete(base,ssw);
  173.          clearInterval(this.intervalID);
  174.       }
  175.       updateAfterEvent();
  176.    }
  177.    function processObject(ssw, aData)
  178.    {
  179.       var _loc12_ = aData[1];
  180.       var _loc11_ = aData[2];
  181.       var _loc10_ = aData[3];
  182.       var _loc4_ = aData[0];
  183.       var _loc5_ = aData[4];
  184.       var _loc7_ = aData[5] != null ? Number(aData[5]) : _loc4_.prototype.depthLayer;
  185.       var _loc8_ = aData[6] != null ? aData[6] : null;
  186.       var _loc6_ = !(aData[7] == null || aData[7] == "") ? aData[7] : null;
  187.       var _loc9_ = aData.slice(10);
  188.       if(_loc4_ == null)
  189.       {
  190.          return false;
  191.       }
  192.       var _loc2_ = {};
  193.       _loc2_.__proto__ = _loc4_.prototype;
  194.       if(_loc4_ == SSShapeInstance)
  195.       {
  196.          _loc4_.call(_loc2_,ssw.shapes[_loc9_[0]]);
  197.       }
  198.       else
  199.       {
  200.          _loc4_.apply(_loc2_,_loc9_);
  201.       }
  202.       _loc2_.x = _loc12_;
  203.       _loc2_.y = _loc11_;
  204.       _loc2_.z = _loc10_;
  205.       if(_loc5_ != "" && _loc5_ != null)
  206.       {
  207.          _loc2_.assetID = _loc5_;
  208.       }
  209.       if(_loc7_ != _loc2_.depthLayer)
  210.       {
  211.          _loc2_.depthLayer = Number(_loc7_);
  212.       }
  213.       if(_loc8_ != null)
  214.       {
  215.          _loc2_.frame = _loc8_;
  216.       }
  217.       if(_loc6_ != null)
  218.       {
  219.          _loc2_.name = _loc6_;
  220.       }
  221.       ssw.addObject(_loc2_);
  222.       this.levelLeft = Math.min(this.levelLeft,_loc2_.left);
  223.       this.levelTop = Math.min(this.levelTop,_loc2_.top);
  224.       this.levelRight = Math.max(this.levelRight,_loc2_.right);
  225.       this.levelBottom = Math.max(this.levelBottom,_loc2_.bottom);
  226.    }
  227.    function complete(base, ssw)
  228.    {
  229.       this.ready = true;
  230.       ssw.levelLeft = this.levelLeft;
  231.       ssw.levelTop = this.levelTop;
  232.       ssw.levelRight = this.levelRight;
  233.       ssw.levelBottom = this.levelBottom;
  234.       this.onComplete(base,ssw);
  235.    }
  236.    function onStatus()
  237.    {
  238.    }
  239.    function toString()
  240.    {
  241.       return "SSLevel " + this.name;
  242.    }
  243. }
  244.